【译】Six nifty ES6 tricks
2016.12.23
RuAn
 热度
℃
六个ES6特性技巧
1、通过参数默认值强制参数
ES6参数默认值是在你实际使用时候来求值的,所以需要你实际强制提供一个默认值。
1 2 3 4 5 6 7 8 9 10
| * Called if a parameter is missing and * the default value is evaluated. */ function mandatory() { throw new Error('Missing parameter'); } function foo(mustBeProvided = mandatory()) { return mustBeProvided; }
|
默认值方法 mandatory() 只会在没有设置参数调用时执行,所以输出结果是
1 2 3 4
| > foo() Error: Missing parameter > foo(123) 123
|
2、通过 for-of 遍历一个数组的下标和元素
我们通过 forEach() 去迭代遍历一个数组中的元素:
1 2 3 4 5 6 7 8
| var arr = ['a', 'b', 'c']; arr.forEach(function (elem, index) { console.log('index = '+index+', elem = '+elem); });
|
ES6中的 for-of 是支持 ES6 迭代(提供 可迭代对象 和 迭代器)和解构功能,如果你把解构与新的阵列的方法entries()组合使用:
1 2 3 4
| const arr = ['a', 'b', 'c']; for (const [index, elem] of arr.entries()) { console.log(`index = ${index}, elem = ${elem}`); }
|
arr.entries()
返回一个对应的指标元素,解构[index, elem]提供我们直接访问每对解构值。
3、简单的模板提供字面量模板
ES6字面量模板比起文本模板,更像是一个字符串字面量模板,但是你可以使用它们返回一个模板:
1 2 3 4 5 6 7 8
| const tmpl = addrs => ` <table> ${addrs.map(addr => ` <tr><td>${addr.first}</td></tr> <tr><td>${addr.last}</td></tr> `).join('')} </table> `;
|
使用模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| const data = [ { first: '<Jane>', last: 'Bond' }, { first: 'Lars', last: '<Croft>' }, ]; console.log(tmpl(data));
|